1. Field of the Invention
This invention relates generally to data processing systems and, more particularly, to object oriented programming systems and processes.
2. Description of the Related Art
Computer programs have typically been developed using procedural programming techniques. Procedural programming techniques emphasize structuring the data processing procedures to which data values are subjected. Efforts to reduce long software development times and high software maintenance costs have resulted in structured programming techniques that attempt to reuse blocks of programming code. For example, tasks or processes that must be repeated can be written as system programming routines or program library functions. Program developers then provide an application program to accomplish a desired result using calls to the system routines and library functions.
System routines and library functions provide only a limited reduction in software development time and maintenance costs. Once a procedural application program is written, it is relatively difficult to incorporate new feature or additional data types. There are many processes in an application program that cannot be easily extracted from program code and reused. Additional data types often cannot be inserted into procedural program code without extensive rewriting of the original program code. Thus, even if new features in a program can be implemented using processes similar to those already in the application, the programming for such processes must be largely duplicated, with slight modifications, to provide the new features. This increases program development time. Moreover, if such programs must operate with other applications, it can be difficult to ensure that the changes will interface properly.
Another problem confronting program developers is that of providing program versions capable of operating with the various platforms used by customers. The different platforms encompass different operating systems as well as different companion applications with which the application must interface. With respect to operating systems, for example, a program developer might have to write different versions for satisfactory operation under the xe2x80x9cWindows 95xe2x80x9d operating system by Microsoft Corp., the UNIX system, the xe2x80x9cMacIntoshxe2x80x9d operating system by Apple Computer Corp., or the xe2x80x9cOS/2xe2x80x9d operating system by International Business Machines Corporation (IBM Corporation). In a similar fashion, a program developer might want to provide the ability to interface with application programs such as word processor programs, spreadsheet programs, and the like, meaning that the program developer must provide the ability to accept files (and produce files) in different file formats. Different platforms use different data formats and procedural operations, so program developers must provide different program versions or routines for each platform.
Object oriented programming (OOP) techniques encapsulate, or bind together, data and the methods that operate on them. This permits program development to more closely model real-world systems for problem solution and breaks up program development efforts into smaller, more manageable pieces. OOP programs are developed around object classes that have attributes, also called data values, and methods, also called functions. Although OOP techniques have done much to improve program development efficiency, such techniques still require a great degree of code generation on the part of application developers and limit program reuse among different classes.
OOP frameworks have been developed in an effort to further reduce program development costs. A framework is a set of OOP classes that embodies a predetermined set of attributes and methods for providing a common group of behaviors. An application program developer utilizes the framework and builds upon it, adding subclasses and attributes and modifying methods depending on the problem to be solved. Such changes to the framework are typically referred to as framework extensions, and are made possible by the OOP notions of inheritance and polymorphism. The challenge confronting framework developers, then, is to arrive at a set of classes and methods that will best provide the desired problem solution and will accept the most likely framework extensions. Thus, the designer of a framework must carefully assess what framework users will most likely need in the way of classes and attributes.
From the discussion above, it should be apparent that there is a need for an application program development tool that permits application program developers to more quickly develop and more easily maintain business financial applications such as general ledger software. The present invention fulfills this need.
In accordance with the present invention, a reusable object oriented (OO) framework for use with object oriented programming systems comprises a general ledger shell that provides a framework user with a set of general ledger classes that can perform general ledger functioning and permits the framework user to add extensions to the framework for specific processing features, thereby producing a general ledger application program for managing business financial data of a company. In this way, the general ledger framework provides a base set of classes on which program developers can build additional specific features they deem important. The framework includes classes for which it is anticipated extension subclassing with new attributes and methods will occur. An application program developer can customize the extension classes to meet the needs of application users and create all user interfaces with the application program, permitting the developer to more quickly conclude program development. The end-user interface establishes a means for the end-user to communicate with the application program to receive, process, and report data. The framework frees the program developer to concentrate on application program features, which can easily be implemented by extending the OO classes and methods of the OO framework. The general ledger framework thereby provides a base from which a variety of general ledger application programs can be quickly and efficiently produced.
The object oriented framework can be described in terms of object class categories of a General Ledger (GL) framework including a GL Application category of classes that contains company information for general ledger processing, a GL Posting Combinations category of classes that define valid posting combinations for the general ledger, a GL Journals category of classes that create, process, validate, and post GL journals, a GL Bank Accounts category of classes that defines internal and external bank accounts that are used in the general ledger, a GL Bank Transactions category of classes that process bank statements, a GL Bank Statements and Reconciliation category of classes that reconcile bank statements with GL Bank Accounts, and a GL Closing category of classes that validate and close the current accounting period. These classes provide the base framework upon which a general ledger application program is developed by the framework user.
Additional object categories include: GL Batches, which comprises classes of objects that create and maintain a batch of journals to be processed together; GL Budgets, which establishes a budget to be followed and reported against; GL Tax, to contain tax information associated with business transactions; GL Balances, for retrieving account balances for dissection; GL Revaluation, to convert account balances to and from various currencies; and GL Spread Profiles, which spreads the impact of a GL Journal across multiple accounting periods.
Other features and advantages of the present invention should be apparent from the following description of the preferred embodiment, which illustrates, by way of example, the principles of the invention.